package org.Iter4.Dominio;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Hashtable;

import org.Iter2.Persistencia.Agente;

public class GestorDesaparecida {
	private Hashtable<String, PersonaDesaparecida> tablaPersonasDesaparecidas;

	public GestorDesaparecida() throws Exception {
		this.tablaPersonasDesaparecidas=new Hashtable<String, PersonaDesaparecida>();
		consultarPersonasDesaparecidas();
	}
	
	public Hashtable<String, PersonaDesaparecida> getTablaPersonasDesaparecidas() {
		return tablaPersonasDesaparecidas;
	}



	public void consultarPersonasDesaparecidas() throws Exception{
		ResultSet rs = null;
		String sentencia = "SELECT * FROM personasdesaparecidas";
		try {
			Agente a = Agente.getAgente();
			rs = a.consultar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		while(rs.next()){
			String ident = rs.getString("ID");
			String name = rs.getString("nombre");
			String ape = rs.getString("apellidos");
			String fechaNac = rs.getString("fechaNacimiento");
			String nacion = rs.getString("nacionalidad");
			String foto = rs.getString("rutaFoto");
			
			PersonaDesaparecida person = new PersonaDesaparecida(ident,name,ape,fechaNac,nacion,foto);
			tablaPersonasDesaparecidas.put(ident, person);
		}
		
	}
	
	public boolean addPersonaDesaparecida(PersonaDesaparecida person) throws Exception{
		boolean resultado=true;
		
		String ident = person.getID();
		String name = person.getNombre();
		String ape = person.getApellidos();
		String fechaNac = person.getFechaNacimiento();
		String nacion = person.getNacionalidad();
		String foto = person.getRutaFoto();
		
		String sentencia = "INSERT INTO personasdesaparecidas (ID,nombre,apellidos,fechaNacimiento,nacionalidad,rutaFoto) VALUES ('"+ ident+"','"+name+"','"+ape+"','"+fechaNac+"','"+nacion+"','"+foto+"')";
		
		if(tablaPersonasDesaparecidas.containsKey(person.getID())){
			resultado=false;
		}else{
		
		try {
			Agente a = Agente.getAgente();
			a.gestionar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		tablaPersonasDesaparecidas.put(ident, person);
		}
		return resultado;
	}
	public boolean modificarPersonaDesaparecida(PersonaDesaparecida person) throws Exception{
		boolean modificarPersona=false;
		String ident = person.getID();
		String name = person.getNombre();
		String ape = person.getApellidos();
		String fechaNac = person.getFechaNacimiento();
		String nacion = person.getNacionalidad();
		String foto = person.getRutaFoto();
		
		String sentencia = "UPDATE personasdesaparecidas SET nombre='"+name+"',apellidos='" +ape+"',fechaNacimiento='"+fechaNac+"',nacionalidad='"+nacion+"',rutaFoto='"+foto+"' WHERE ID='"+ident+"'";
	    if(tablaPersonasDesaparecidas.containsKey(ident)){
	    	modificarPersona = true;
	    }
	    else modificarPersona = false;
	    
	    if(modificarPersona){
	    	tablaPersonasDesaparecidas.remove(ident);
		try {
			Agente a = Agente.getAgente();
			a.gestionar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			tablaPersonasDesaparecidas.put(ident, person);

		}
	    
		return modificarPersona;
	}
	public boolean eliminarPersonaDesaparecida(String ID) throws Exception{
		boolean eliminarPersona=true;
		
		String sentencia = "DELETE FROM personasdesaparecidas WHERE ID='"+ID+"'";
		try {
			Agente a = Agente.getAgente();
			a.gestionar(sentencia);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		tablaPersonasDesaparecidas.remove(ID);
		return eliminarPersona;
	}
	
	public String siguienteID(){
	Enumeration <String> enumer =tablaPersonasDesaparecidas.keys();
	int mayor=0;
	int actual=0;
	
	while(enumer.hasMoreElements()){
		actual=Integer.parseInt(enumer.nextElement());
		
		if(actual>mayor)
			mayor=actual;
	}
	int indice=(mayor)+1;
	String ID=""+indice;
	return ID;
}
}
